Los principales objetivos de este ejercicio fueron crear y completar la IDT y las rutinas para procesar
las diferentes excepciones del procesador.

\subsubsection{IDT}
El archivo {\bf idt.c} contiene el c\'odigo para inicializar la IDT.
\\
\hspace*{10pt}
Lo primero a hacer fue modificar la macro para armar entradas de interrupciones para que use el selector
de segmento \texttt{0x0050} (C\'odigo de nivel 0, \{index: A $|$ gdt: 0 $|$ rpl: 00\}) y los atributos
\texttt{0x8E00} (\{P: 1 $|$ DPL: 00 $|$ 01110 (D=1) $|$ 000 00000\}).
\\
\hspace*{10pt}
Luego se complet\'o \texttt{inicializar\_idt} para que contenga las entradas 0 a 19, dado que las 20 a
31 son reservadas de Intel y las 32 a 255 son user-defined.

\subsubsection{ISR}
Los archivos {\bf isr.h} y {\bf isr.asm} contienen respectivamente las definiciones e implementaciones
de las rutinas de interrupci\'on.
\\
\hspace*{10pt}
En {\bf isr.h} se definieron \texttt{\_isr0} a \texttt{\_isr19}, m\'etodos para capturar y procesar las
interrupciones. Estos fueron a su vez implementados en {\bf isr.asm}. En este archivo se definieron los
20 mensajes de error para cada interrupci\'on. Luego se implementaron las rutinas, que consisten
simplemente en mostrar el mensaje correspondiente en pantalla y realizar un \texttt{jmp \$} que produce
un ciclo infinito interrumpiendo la ejecuci\'on como solicitaba la consigna.

\subsubsection{Kernel}
Finalmente, desde el Kernel llamamos a \texttt{inicializar\_idt} para inicializar las 20 entradas de la IDT y luego la cargamos al registro IDTR llamando a \texttt{lidt [IDT\_DESC]}.
\\
\hspace*{10pt}
Para terminar, agregamos un peque\~no c\'odigo que genere una excepci\'on de divisi\'on por cero moviendo el
valor 0 a {\bf ebx} y ejecutando la operaci\'on \texttt{div ebx}.
Como era de esperarse, esto produce una excepci\'on capturada por la interrupci\'on 0 y mostrando el siguiente
error en pantalla.

\begin{figure}[H]
	\centering
	\includegraphics[scale=0.5]{Images/ej2.png}
	\centering
	\label{fig_ej2}
\end{figure}
